package service;

import entity.User;
import exception.DuplicateUsernameException;
import exception.UserDisabledException;
import exception.UserNotFoundException;

/**
 * 用户服务对象
 * @author 李恒
 */
public interface UserService {

    /**
     * 用户注册，保存用户信息，当前时间为注册时间，密码需要加密，刚注册的用户状态为Constant.UserStatus.USER_STATAUS_ENABLE
     * @param user 封装了注册用户信息的用户对象
     * @throws DuplicateUsernameException 重复的用户名异常，当注册的用户名在本系统中存在时，抛出此异常
     * @throws framework.service.exception.ServiceException 服务失败异常，当此业务处理未成功时，抛出此异常
     */
    public void regist(User user) throws DuplicateUsernameException;

    /**
     * 用户登录，密码需要加密
     * @param username 用户名
     * @param password 密码
     * @return 封装了登录用户信息的用户对象
     * @throws UserNotFoundException 用户不存在异常，当登录的用户名或密码错误时，抛出此异常
     * @throws UserDisabledException 用户被禁用异常，当登录的用户状态为Constant.UserStatus.USER_STATAUS_DISABLE时，抛出此异常
     * @throws framework.service.exception.ServiceException 服务失败异常，当此业务处理未成功时，抛出此异常
     */
    public User login(String username,String password) throws UserNotFoundException, UserDisabledException;


    public void validateUsername(String username)throws DuplicateUsernameException;













}
